package asem.ast.expresiones;

import alex.Token;
import asem.TablaSimbolos;
import asem.excepciones.ExcepcionAccesoInvalido;
import asem.tablaSimbolos.Metodo;
import asem.tablaSimbolos.tipo.TipoClase;
import asem.tablaSimbolos.tipo.TipoMetodo;

public class NodoThis extends NodoOperando {
	protected Token tokenThis;

	public NodoThis() {
		// El tipo del this es el tipo de la clase que estamos procesando
		tipo = new TipoClase(TablaSimbolos.tabla.claseActual()
				.getIdentificador());
	}

	@Override
	public TipoMetodo chequeoSentencias() {
		if (TablaSimbolos.tabla.metodoActual() instanceof Metodo) {
			Metodo m = TablaSimbolos.tabla.metodoActual();

			if (m.esEstatico())
				throw new ExcepcionAccesoInvalido(tokenThis, m);
		}

		return tipo;
	}
}
